#include <stdio.h>
#include <malloc.h>

/*
 * 柔性数组：数组不指定大小，并且作为结构体的最后一个成员。
 * */

typedef struct fa {
    int i;
    int arr[];
}type_a;

int main() {
    type_a a = {};
    printf("sizeof(a):%d\n", sizeof(a)); // 4 动态分配内存之前，柔性数组不占内存空间
    // type_a b = {2,{1,2,5}}; // Initialization of flexible array member is not allowed
    // 使用malloc给柔性数组分配空间
    type_a * c = (type_a *)malloc(sizeof(type_a) + 10*sizeof(int)); //
    printf("sizeof(c):%d\n", sizeof(c)); // 8 
    c->i = 3;
    c->arr[0] = 1;
    c->arr[1] = 6;
    c->arr[2] = 2;
    printf("c->arr[1]:%d\n", c->arr[1]); // 6
    free(c);

    return 0;
}
